package com.decent.sms.service.impl;

import com.decent.sms.dao.SmsConfigDao;
import com.decent.common.entity.sms.SmsConfig;
import com.decent.common.enums.sms.SmsConfigKeyEnum;
import com.decent.sms.service.SmsConfigService;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.stereotype.Service;

import javax.annotation.Resource;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;

/**
 * 短信配置管理
 *
 * @author wangyx
 */
@Service
public class SmsConfigServiceImpl implements SmsConfigService {
    @Resource
    private RedisTemplate<String, Object> redisTemplate;
    @Resource
    private SmsConfigDao smsConfigDao;

    /**
     * 数据库批量查询，转换成map处理
     *
     * @param queryKeys 查询配置键
     * @return map
     */
    @Override
    public HashMap<SmsConfigKeyEnum, String> batchQuery(List<SmsConfigKeyEnum> queryKeys) {
        queryKeys.add(SmsConfigKeyEnum.SEND_SMS_URL);
        queryKeys.add(SmsConfigKeyEnum.YZX_ACCOUNT);
        queryKeys.add(SmsConfigKeyEnum.YZX_SECRET);
        List<SmsConfig> smsConfigs = smsConfigDao.batchQuery(queryKeys);
        Map<SmsConfigKeyEnum, List<SmsConfig>> temp = smsConfigs.stream()
                .collect(Collectors.groupingBy(SmsConfig::getConfigKey));
        final HashMap<SmsConfigKeyEnum, String> config = new HashMap<>(smsConfigs.size());
        temp.forEach((key, value) -> config.put(key, value.get(0).getConfigValue()));
        return config;
    }
}
